package shujia.day11;
/*
    Collection【接口】：
        - List【接口】元素有序【添加和取出的顺序一致】，允许发生重复，有索引
            - ArrayList: 底层数据结构是数组，查询快，增删慢，线程不安全，效率高
            - Vector: 底层数据结构是数组，查询快，增删慢，线程安全，效率低，即便安全我们以后也不用
            - LinkedList: 底层数据结构是双链表，增删快，查询慢，线程不安全，效率高
        - Set【接口】元素无序【添加和取出的顺序不一致】，且唯一
            - HashSet: 底层数据结构是哈希表，线程不安全，效率高，能够保证元素的唯一
                - LinkedHashSet: 底层数据结构是哈希表和链表，线程不安全，效率高，能够保证元素的唯一【哈希表】，有序【链表】！
            - TreeSet: 底层数据结构是红黑树，具有可预测的迭代次序或自定义排序
                排序方式：
                    1) 自然排序
                    2) 比较器排序


 */

import java.util.TreeSet;

public class TreeSetDemo1 {
    public static void main(String[] args) {
        // 使用TreeSet集合存储字符串元素对象并遍历
        //TreeSet() 构造一个新的，空的树组，根据其元素的自然排序进行排序
        TreeSet<String> set1 = new TreeSet<>();

        /*
            TreeSet中的add方法底层实际上是调用了TreeMap中的put方法

         */
        set1.add("banana");
        set1.add("peach");
        set1.add("apple");
        set1.add("watermelon");
        set1.add("banana");
        set1.add("apple");
        set1.add("cherry");
        System.out.println(set1);

        for (String s : set1) {
            System.out.println(s);
        }


    }
}
